#ifndef _KC_COMMSERVER_H__KC_
#define _KC_COMMSERVER_H__KC_

#include <vector>
#include "CommRequestHandler.h"

namespace kc_sf
{
	/*
	 * Interfejs dla serwerów, oczekujących na połączenia,
	 * które korzystają z protokołów typu tcp.
	 * Samą rozmową z klientem zajmuje je podawany w
	 * konstruktorze ConnServer
	 */
	class CommServer
	{
		public:

			CommServer( CommRequestHandler *client_handler )
			: s_client_handler( client_handler )
			{
			}

			virtual ~CommServer() {}

			virtual void startListening() = 0;
			virtual void stopListening() = 0;

			virtual std::list<int> getOpenConnectionSockets () = 0;
			virtual void closeConnection ( int sockfd ) = 0;
			virtual void closeAllConnections () = 0;

		protected:

		    CommRequestHandler *s_client_handler;
	};
}

#endif // _KC_COMMSERVER_H__KC_
